#include "HttpServer.hpp"
#include "Util.hpp"
#include "Protocol.hpp"

#include <iostream>
#include <string>
#include <memory>

using namespace std;

// string HttpHandler1(const string &url)
// {
//     // 解析请求
//     Request req;
//     req.Deserialization(url);

//     // 读取资源文件
//     string body;
//     Util::ReadFile(req._path, &body);
//     cout << "path: " << req._path << endl;
    
//     // 状态行
//     string response = "HTTP/1.0 200 OK" + SEP;
    
//     // 响应报头
//     response += "Content-Length: " + to_string(body.size()) + SEP; // 有效载荷的长度
//     response += "Content-Type: text/html" + SEP;                   // 有效载荷的类型为 文本

//     // 空行
//     response += SEP;

//     // 有效载荷
//     response += body;

//     cout << "Send: " << response << endl << endl;
//     return response;
// }

string HttpHandler(const string &url)
{
    cout << url << endl;
    // 解析请求
    Request req;
    req.Deserialization(url);

    // 构建响应
    Response res;
    res.LoadInfo(req);

    // 响应
    string ret;
    res.Serialization(&ret);
    return ret;
}

int main()
{
    unique_ptr<HttpServer::Server> psvr(new HttpServer::Server(HttpHandler));

    psvr->Init();
    psvr->Start();

    return 0;
}